From the late 1970's to the present day, the use of computers has proliferated in businesses, homes, academia, and a multitude of other environments. This proliferation has been due, in part, to the development of standardized computers that can be mass produced at affordable costs and that include expansion capabilities to support user customization.
A standardized computer typically comprises a power supply, a central processing unit, system address space, input/output ports, and a card expansion system. The components of the computer communicate with one another by transmitting and receiving signals on a system bus, which is a group of electrical connections between the components.
Each component on the bus has its own address or set of addresses and electronically monitors the bus for signals coded with that address. Thus, each component receives all signals that are transmitted on the bus, but responds only to signals with its address or set of addresses.
Card expansion systems typically comprise a plurality of expansion slots connected to the system bus by means of an expansion bus. The expansion bus may be of a variety of bus standards, such as Industry Standard Architecture (ISA), Extended Industry Standard Architecture (EISA), Small Computer Systems Interface (SCSI) or Personal Computer Memory Card International Association (PCMCIA). These bus standards and others were developed by the computer industry to allow a variety of adapter cards to be designed for operation with computer systems through expansion busses.
As used herein, the phrase "adapter card" means a card having a circuit board for installation in an expansion slot of a computing device such that it operates in conjunction with the computer system to perform certain functions. Common types of adapter cards are video display adapters, disk controllers, expanded memory boards, serial/parallel adapters, mouse controllers, network links and communication adapters.
When an adapter card is inserted into an expansion slot of a computer, the card must be configured by allocating to the card, or to a controller of the card if one is present, certain system resources with which it can communicate with other components of the computer. Such system resources include interrupts, direct memory access (DMA) channels, memory addresses, and input/output (I/O) ports. Interrupts allow the adapter card to interrupt the central processing unit, suspend the current program and execute a set of instructions associated with the interrupt. A direct memory access (DMA) channel allows the adapter card to address memory without the assistance of the central processing unit. Memory addresses permit access to the card through system address space. The input/output ports allow access to the card through input/output address space.
In the past, the resources assigned to adapter cards were generally configured manually by a user. Manual configuration often presented a complex series of technical tasks because many personal computers cannot determine which components are connected to the computer. Furthermore, the connected components often failed to detect conflicts when another component attempted to share the same resource. Accordingly, a user typically had to resolve a resource conflict by first identifying the problem and thereafter experimenting with hardware and software configurations in an attempt to correct the resource conflict.
More recently, a computer-implemented process for dynamically configuring adapter cards in a computer system has been developed. This computer-implemented configuration process is disclosed by U.S. patent application Ser. No. 08/250,698, which is commonly assigned with this application and is incorporated herein by reference. In accordance with the process disclosed in U.S. patent application Ser. No. 08/250,698, adapter cards are configured by automatically collecting information from a card about its configuration when the card is inserted into an expansion slot. On the basis of this information, the computer system then allocates resources to configure the card.
Before a computer system can obtain configuration information from a card, however, an address space, or "memory window", must be allocated to the card from system address space. The memory window enables communications between the computer system and the card via the system bus by providing an address for transmitting and receiving information.
Address space that is available for allocation to support adapter card configuration is typically listed by a memory manager of the computer system. As used herein, the phrase available address space means system address space that is listed by a computer system as available for adapter card allocation, regardless of the actual suitability of the address space for such allocation.
A problem associated with allocating available address space as a memory window is that the space may already be associated with another component of the computer. Such allocation of address space creates a problem because configuration information received through such a memory window will be inaccurate due to interference from the other component, with which the address space is already associated.
For example, an address space associated with a read only memory (ROM) socket may appear available when a ROM device is not plugged into the socket. However, decoding logic of the ROM socket will attempt to drive the bus through the socket's bus drivers when information is communicated through that address space. Thus, if that address space is allocated as a memory window for the computer system to communicate with an adapter card, the configuration information received through the memory window will be inaccurate due to the interference caused by the ROM socket's bus drivers.
At present, however, no means exist for determining whether available address space is free address space. As used herein, the term free address space means system address space that is free from interference caused by other components of the computer system. Therefore, a need exists in the art for a system for, and method of, validating system address space in a computer system to support adapter card configuration.